package com.juzi.polymorphic;

/**
 * 目标：认识多态，理解多态的形式和概念
 */

public class Test {
    public static void main(String[] args) {
        //1、多态的形式:  父类类型 对象名称 = new 子类构造器；
        Animal a = new Dog();
        a.run();    //编译看左边，运行看右边
        System.out.println(a.name); //变量调用：编译看左边，运行也看左边

        Animal a2 = new Tortoise();
        a2.run();
        System.out.println(a2.name);

        System.out.println("-----------------------");

        Tortoise t = new Tortoise();
        go(t);

        Dog d = new Dog();
        go(d);
        System.out.println("-----------------------");

        Animal a11 = new Tortoise();
        go(a11);

        Animal a22 = new Dog();
        go(a22);
//        a22.lookDoor();//多态下不能访问子类独有功能
    }


    /**
     * 需求：所有的动物都可以参加比赛
     */
    public static void go(Animal a) {
        System.out.println("开始。。。");
        a.run();
        System.out.println("结束。。。");
    }
}
